﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace ERPU8WebApi.Models.Production
{
    //物料清单 BOM
    public class BillOfMaterial
    {
        public BOMMaster BOMMaster;
        public List<BOMComponent> BOMComponent;
    }
    public class BOMMaster
    {
        #region 主表

        /************************************************** 必输字段 **************************************************/
        public int BomId; //主键，int类型
        public string InvCode; //母件编码，string类型
        public string InvName; //母件名称(导出用)，string类型
        public string InvStd; //规格型号(导出用)，string类型
        public string InvUnitName; //计量单位(导出用)，string类型
        public string InvUnit; //计量单位编码(导出用)，string类型
        public string CreateUser; //建档人(导出用)，string类型
        public string ModifyUser; //修改人(导出用)，string类型
        public DateTime CreateDate; //建档日期(导出用)，DateTime类型
        public DateTime ModifyDate; //修改日期(导出用)，DateTime类型
        public DateTime ModifyTime; //修改时间(导出用)，DateTime类型
        public DateTime CreateTime; //创建时间(导出用)，DateTime类型
        public string RelsUser; //审核人(导出用)，string类型
        public DateTime RelsDate; //审核日期(导出用)，DateTime类型
        public DateTime RelsTime; //审核时间(导出用)，DateTime类型
        public string CloseUser; //停用人(导出用)，string类型
        public DateTime CloseDate; //停用日期(导出用)，DateTime类型
        public DateTime CloseTime; //停用时间(导出用)，DateTime类型

        /************************************************* 非必输字段 *************************************************/
        public int UpdateByDiff; //差异更新(更新时使用)，int类型
        public int PartId; //ParentId(导出用)，int类型
        public int BomType; //BOM类别(1主2替代)，int类型
        public string BasEngineerFigNo; //工程图号(导出用)，string类型
        public double ParentScrap; //母件损耗率(％0~99)，double类型
        public int Version; //版本代号，int类型
        public string VersionDesc; //版本说明，string类型
        public DateTime VersionEffDate; //版本日期(YYYY-MM-DD)，DateTime类型
        public string IdentCode; //替代标识，string类型
        public string IdentDesc; //替代说明，string类型
        public string InvAddCode; //母件代号(导出用)，string类型
        public string InvFree_1; //母件自由项1，string类型
        public string InvFree_2; //母件自由项2，string类型
        public string InvFree_3; //母件自由项3，string类型
        public string InvFree_4; //母件自由项4，string类型
        public string InvFree_5; //母件自由项5，string类型
        public string InvFree_6; //母件自由项6，string类型
        public string InvFree_7; //母件自由项7，string类型
        public string InvFree_8; //母件自由项8，string类型
        public string InvFree_9; //母件自由项9，string类型
        public string InvFree_10; //母件自由项10，string类型
        public string Define_1; //BOM自定义项1，string类型
        public string Define_2; //BOM自定义项2，string类型
        public string Define_3; //BOM自定义项3，string类型
        public DateTime Define_4; //BOM自定义项4，DateTime类型
        public int Define_5; //BOM自定义项5，int类型
        public DateTime Define_6; //BOM自定义项6，DateTime类型
        public double Define_7; //BOM自定义项7，double类型
        public string Define_8; //BOM自定义项8，string类型
        public string Define_9; //BOM自定义项9，string类型
        public string Define_10; //BOM自定义项10，string类型
        public string Define_11; //BOM自定义项11，string类型
        public string Define_12; //BOM自定义项12，string类型
        public string Define_13; //BOM自定义项13，string类型
        public string Define_14; //BOM自定义项14，string类型
        public int Define_15; //BOM自定义项15，int类型
        public double Define_16; //BOM自定义项16，double类型
        public string InvDefine_1; //母件自定义项1，string类型
        public string InvDefine_2; //母件自定义项2，string类型
        public string InvDefine_3; //母件自定义项3，string类型
        public string InvDefine_4; //母件自定义项4，string类型
        public string InvDefine_5; //母件自定义项5，string类型
        public string InvDefine_6; //母件自定义项6，string类型
        public string InvDefine_7; //母件自定义项7，string类型
        public string InvDefine_8; //母件自定义项8，string类型
        public string InvDefine_9; //母件自定义项9，string类型
        public string InvDefine_10; //母件自定义项10，string类型
        public int InvDefine_11; //母件自定义项11，int类型
        public int InvDefine_12; //母件自定义项12，int类型
        public double InvDefine_13; //母件自定义项13，double类型
        public double InvDefine_14; //母件自定义项14，double类型
        public DateTime InvDefine_15; //母件自定义项15，DateTime类型
        public DateTime InvDefine_16; //母件自定义项16，DateTime类型
        public int BomState; //状态(导出用)，int类型
        public DateTime VersionEndDate; //版本失效日期(导出用)，DateTime类型
        public int InvGroupType; //存货计量单位组类型(导出用)，int类型
        public string InvGroupCode; //存货量单位组编码(导出用)，string类型
        public string InvGroupName; //存货计量单位名称(导出用)，string类型

        #endregion 主表

    }
    public class BOMComponent
    {
        #region 主表

        /************************************************** 必输字段 **************************************************/
        public int DSortSeq; //子件行号(默认系统自增)，int类型
        public string DOpSeq; //工序行号(默认0000)，string类型
        public string DInvCode; //子件编码，string类型
        public double DBaseQtyN; //基本用量(默认1)，double类型
        public double DBaseQtyD; //基础数量(默认1)，double类型
        public double DCompScrap; //子件损耗率％(默认0)，double类型
        public int DFVFlag; //固定用量(默认固定)，int类型
        public int DWIPType; //供应类型(默认领用)，int类型
        public DateTime DEffBegDate; //生效日期(默认母件生效日)，DateTime类型
        public DateTime DEffEndDate; //失效日期(默认2099-12-31)，DateTime类型
        public double DPlanRate; //计划比例％(默认100)，double类型
        public int DByproductFlag; //产出品(默认否)，int类型
        public int DAccuCostFlag; //成本相关，int类型
        public int DOptionalFlag; //是否可选(默认全选)，int类型
        public int DMutexRule; //选择规则(默认全选)，int类型
        public int DProductType; //产出类型(默认空，受是否产出品约束)，int类型
        public string DInvName; //子件名称(导出用)，string类型
        public string DInvStd; //子件规格(导出用)，string类型
        public string DInvUnit; //计量单位编码(子件)，string类型
        public string DInvUnitName; //计量单位(导出用)，string类型
        public double DQty; //使用数量(默认1)，double类型
        public string DWhName; //仓库名称(导出用)，string类型
        public string DDeptName; //部门名称(导出用)，string类型
        public int DSubFlag; //替代标志(导出用)，int类型
        public string DAuxUnitName; //辅助单位(导出用)，string类型
        public double DAuxQty; //辅助使用量，double类型
        public int DInvGroupType; //计量单位组类别(导出用)，int类型
        public string DOpDesc; //工序名称(导出用)，string类型

        /************************************************* 非必输字段 *************************************************/
        public string DRemark; //备注，string类型
        public string DInvAddCode; //子件代号(导出用)，string类型
        public int DOffset; //偏置期(默认不偏置)，int类型
        public string DWhCode; //仓库编码(默认子件存货档案)，string类型
        public string DDeptCode; //领料部门(默认为子件存货档案)，string类型
        public string DInvFree_1; //子件自由项1，string类型
        public string DInvFree_2; //子件自由项2，string类型
        public string DInvFree_3; //子件自由项3，string类型
        public string DInvFree_4; //子件自由项4，string类型
        public string DInvFree_5; //子件自由项5，string类型
        public string DInvFree_6; //子件自由项6，string类型
        public string DInvFree_7; //子件自由项7，string类型
        public string DInvFree_8; //子件自由项8，string类型
        public string DInvFree_9; //子件自由项9，string类型
        public string DInvFree_10; //子件自由项10，string类型
        public string DInvDefine_1; //子件自定义项1，string类型
        public string DInvDefine_2; //子件自定义项2，string类型
        public string DInvDefine_3; //子件自定义项3，string类型
        public string DInvDefine_4; //子件自定义项4，string类型
        public string DInvDefine_5; //子件自定义项5，string类型
        public string DInvDefine_6; //子件自定义项6，string类型
        public string DInvDefine_7; //子件自定义项7，string类型
        public string DInvDefine_8; //子件自定义项8，string类型
        public string DInvDefine_9; //子件自定义项9，string类型
        public string DInvDefine_10; //子件自定义项10，string类型
        public int DInvDefine_11; //子件自定义项11，int类型
        public int DInvDefine_12; //子件自定义项12，int类型
        public double DInvDefine_13; //子件自定义项13，double类型
        public double DInvDefine_14; //子件自定义项14，double类型
        public DateTime DInvDefine_15; //子件自定义项15，DateTime类型
        public DateTime DInvDefine_16; //子件自定义项16，DateTime类型
        public DateTime DSubDate; //替换日期(导出用)，DateTime类型
        public string DAuxUnitCode; //辅助单位编码，string类型
        public double DChangeRate; //换算率，double类型
        public double DAuxBaseQtyN; //辅助基本用量，double类型
        public string DBasEngineerFigNo; //工程图号(导出用)，string类型
        public string DDefine_22; //BOM表体自定义项1，string类型
        public string DDefine_23; //BOM表体自定义项2，string类型
        public string DDefine_24; //BOM表体自定义项3，string类型
        public string DDefine_25; //BOM表体自定义项4，string类型
        public double DDefine_26; //BOM表体自定义项5，double类型
        public double DDefine_27; //BOM表体自定义项6，double类型
        public string DDefine_28; //BOM表体自定义项7，string类型
        public string DDefine_29; //BOM表体自定义项8，string类型
        public string DDefine_30; //BOM表体自定义项9，string类型
        public string DDefine_31; //BOM表体自定义项10，string类型
        public string DDefine_32; //BOM表体自定义项11，string类型
        public string DDefine_33; //BOM表体自定义项12，string类型
        public int DDefine_34; //BOM表体自定义项13，int类型
        public int DDefine_35; //BOM表体自定义项14，int类型
        public DateTime DDefine_36; //BOM表体自定义项15，DateTime类型
        public DateTime DDefine_37; //BOM表体自定义项16，DateTime类型
        public string DInvGroupCode; //计量单位组(导出用)，string类型
        public string DInvGroupName; //存货计量单位名称(导出用)，string类型
        public int DPartId; //子件物料ID，int类型
        public int DCompScrapFlag; //阶梯损耗(导出用)，int类型
        public int DCostWIPRel; //成本投产推算，int类型

        #endregion 主表
        public List<BomComponentSubs> BomComponentSubs;
        public List<BomComponentLoc> BomComponentLoc;
        public List<BOMComponent> BOMComponents;

    }
    public class BomComponentSubs
    {
        /************************************************** 必输字段 **************************************************/
        public string DInvCode; //可替代料编码，string类型
        public int DSequence; //替代次序(默认1)，int类型
        public double DFactor; //替代比(默认1)，double类型
        public DateTime DEffBegDate; //生效日期(默认子件生效日)，DateTime类型
        public DateTime DEffEndDate; //失效日期(默认子件失效日)，DateTime类型
        public int DReplaceFlag; //替换料(默认否)，int类型
        public string DInvName; //替代料名称(导出用)，string类型
        public string DInvStd; //替代料规格(导出用)，string类型
        public string DInvUnit; //计量单位编码(导出用)，string类型
        public string DInvUnitName; //计量单位(导出用)，string类型

        /************************************************* 非必输字段 *************************************************/
        public string DInvAddCode; //替代料代号(导出用)，string类型
        public string DInvFree_1; //替代料自由项1，string类型
        public string DInvFree_2; //替代料自由项2，string类型
        public string DInvFree_3; //替代料自由项3，string类型
        public string DInvFree_4; //替代料自由项4，string类型
        public string DInvFree_5; //替代料自由项5，string类型
        public string DInvFree_6; //替代料自由项6，string类型
        public string DInvFree_7; //替代料自由项7，string类型
        public string DInvFree_8; //替代料自由项8，string类型
        public string DInvFree_9; //替代料自由项9，string类型
        public string DInvFree_10; //替代料自由项10，string类型
        public string DInvDefine_1; //替代料自定义项1，string类型
        public string DInvDefine_2; //替代料自定义项2，string类型
        public string DInvDefine_3; //替代料自定义项3，string类型
        public string DInvDefine_4; //替代料自定义项4，string类型
        public string DInvDefine_5; //替代料自定义项5，string类型
        public string DInvDefine_6; //替代料自定义项6，string类型
        public string DInvDefine_7; //替代料自定义项7，string类型
        public string DInvDefine_8; //替代料自定义项8，string类型
        public string DInvDefine_9; //替代料自定义项9，string类型
        public string DInvDefine_10; //替代料自定义项10，string类型
        public int DInvDefine_11; //替代料自定义项11，int类型
        public int DInvDefine_12; //替代料自定义项12，int类型
        public double DInvDefine_13; //替代料自定义项13，double类型
        public double DInvDefine_14; //替代料自定义项14，double类型
        public DateTime DInvDefine_15; //替代料自定义项15，DateTime类型
        public DateTime DInvDefine_16; //替代料自定义项16，DateTime类型
        public int ComponentSubId; //ComponentSubId(导出用)，int类型
        public string DBasEngineerFigNo; //工程图号(导出用)，string类型
        public string DDefine_22; //表体自定义项1，string类型
        public string DDefine_23; //表体自定义项2，string类型
        public string DDefine_24; //表体自定义项3，string类型
        public string DDefine_25; //表体自定义项4，string类型
        public double DDefine_26; //表体自定义项5，double类型
        public double DDefine_27; //表体自定义项6，double类型
        public string DDefine_28; //表体自定义项7，string类型
        public string DDefine_29; //表体自定义项8，string类型
        public string DDefine_30; //表体自定义项9，string类型
        public string DDefine_31; //表体自定义项10，string类型
        public string DDefine_32; //表体自定义项11，string类型
        public string DDefine_33; //表体自定义项12，string类型
        public int DDefine_34; //表体自定义项13，int类型
        public int DDefine_35; //表体自定义项14，int类型
        public DateTime DDefine_36; //表体自定义项15，DateTime类型
        public DateTime DDefine_37; //表体自定义项16，DateTime类型
        public int DInvGroupType; //存货计量单位组类型(导出用)，int类型
        public string DInvGroupCode; //存货计量单位组编码(导出用)，string类型
        public string DInvGroupName; //存货计量单位组名称(导出用)，string类型
        public int DPartId; //替代物料ID(导出用)，int类型


    }
    public class BomComponentLoc
    {
        public string DLoc; //定位符，string类型
        public int DSortSeq; //明细行号(默认系统自增)，int类型
    }
}